/**
 * Project Name: mms-provider-user
 * File Name: PositionMapper
 * Package Name: com.scb.dev.mms.dao
 * Date: 2018/11/27 2:16 PM
 * Copyright (c) 2018, Wang, Haoyue All Rights Reserved.
 */
package com.scb.dev.mms.dao;

import com.scb.dev.mms.pojo.Position;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ClassName: PositionMapper
 * Description: Position 映射接口
 * Date: 2018/11/27 2:16 PM
 *
 * @author Wang, Haoyue
 * @version V1.0
 * @since JDK 1.8
 */
@Mapper
public interface PositionMapper {

    /**
     * 动态添加职位信息
     * @param record 需要添加的职位对象
     * @return 若返回为1，表示添加成功；若返回为0，表示添加失败
     */
    int insertSelective(Position record);

    /**
     * 批量增加职位
     * @param positionList 增加职位名称
     * @return
     */
    int insertPositionBatch(List<Position> positionList);

    /**
     * 通过主键删除相关的职位信息
     * @param positionId  职位ID
     * @return 若返回为1，表示删除成功；若返回为0，表示删除失败或删除对象不存在
     */
    int deleteByPrimaryKey(String positionId);

    /**
     * 批量删除职位
     * @param positionIds
     * @return
     */
    int deletePositionBatch(List<String> positionIds);

    /**
     * 动态修改职位信息
     * @param record 需要添加的职位对象
     * @return 若返回为1，表示修改成功；若返回为0，表示修改失败
     */
    int updateByPrimaryKeySelective(Position record);

    /**
     * 通过主键查找职位对象
     * @param positionId  需要查找的职位ID
     * @return 若对象不为空，表示查询成功。
     */
    Position selectByPrimaryKey(String positionId);

    /**
     * 通过主键查找职位名称
     * @param positionId  需要查找的职位ID
     * @return 若字符串不为空，表示查询成功。
     */
    String selectPositionNameByPrimaryKey(String positionId);

    /**
     * 获取所有职位集合
     * @return
     */
    List<Position> findAllPosition();

    /**
     * 检测是否有同名职位
     * @param positionName 职位名称
     * @return
     */
    int checkPositionName(String positionName);


    /**
     * 通过主键进行级联删除
     * @param oldPositionId  职位ID
     * @return 若返回为1，表示删除成功；若返回为0，表示删除失败或删除对象不存在
     */
    int cascadeUpdateEmployeeByPrimaryKey(@Param("oldPositionId") String oldPositionId, @Param("newPositionId") String newPositionId);

    /**
     * 通过主键检测该职位是否有人员
     * @param employeePositionId  职位ID
     * @return 若返回不为0 ,表示拥有员工属于该职位
     */
    int checkIsExistEmployee(String employeePositionId);
}